A networked computer is a computer connected to a communications network (e.g., an Internet Protocol (IP) network). The computer can function as a server to offer functionality to client computers that are connected to the server over the communications network. The functionality provided by the server is determined by one or more software programs (e.g., applications), which are installed and running on the server. An application typically includes binary (e.g., executable) files, configuration files, etc., residing in one or more directories on the server.
Before an application can be made available to a client computer, a system administrator (or a group of system administrators in a larger enterprise) needs to provision the application onto the server (e.g., an enterprise server). Application provisioning includes the process of deployment, installation, and start-up of the application. During deployment, all of the components (e.g., binary files, configuration files) of the application are transferred to the server. The application then needs to be installed onto the server. During installation, the components of the application are placed into one or more pre-defined directories in the server. Variables in the configuration files of the application are populated with values to provide a desired configuration. The configuration choice can depend on many different aspects including, for example, the type of server in which the application is installed, the IP address or addresses of the server, the subnet in which the server is located, the Virtual Local Area Network (VLAN) segment to which the server belongs, other software already installed on the server, the role of the server within the enterprise, and the underlying operating system (OS) or hardware. The system administrator is generally required to manually enter these values at the time the application is installed. The server may also need to be configured for the software application to become operational. For example, a server registry may need to be edited by the system administrator depending on the type of application that is installed.
A number of conditions may need to be checked to ensure that the application can successfully run on the selected server, such as memory, architecture, any previously installed software, etc. Additionally, the configuration of another application already installed on the server may be affected by the new application and therefore may need to be changed. Once installed and configured, the newly installed application can be started, i.e., have its executable files brought into a running state.
The system administrator is usually responsible for readying the software on all the servers as mentioned above, in such a way that the servers cooperatively offer a desired functionality for a given business objective. Given the complexity of the provisioning process as described above, this can be a very time-consuming task. Furthermore, any small error in the configuration file of a single application on a single server can invalidate the enforcement of the desired functionality of the enterprise as a whole. Errors in the configuration files can go undetected for a long time. Traditional system management software typically will not generate any alerts since all the servers and applications are up and running, and thus are not generating an event to which the system management software can react.
As apparent from the above-described deficiencies with the manual provisioning of applications, a need exists for a system and method for automating the provisioning of the applications onto one or more servers in, for example, an enterprise data center, while ensuring that each deployment, installation, and configuration is executed in such a way that, as a whole, all the servers realize the desired business functionality.